//
//  DYWLoadingController.swift
//  sinaWeibo
//
//  Created by 董艳武 on 16/2/20.
//  Copyright © 2016年 董艳武. All rights reserved.
//

import UIKit
import SDWebImage
import SnapKit

class DYWLoadingController: UIViewController {
    /// 重写 loadView 方法 （只会调用一次）
    override func loadView() {
        view = backgrandImg
    }

    // 只会调用一次
    override func viewDidLoad() {
        super.viewDidLoad()
        // MARK:--添加子空间，设置约束
        setUI()
    }
    // 会调用很多次
    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)
        iconViewAnimatring()
    }
    
    /// 添加约束 设置视图 
    private func setUI () {
        view.addSubview(userIconView)
        view.addSubview(userNameLabel)
        
        // 为 userconView 添加约束
        userIconView.snp_makeConstraints { (make) -> Void in
            make.size.equalTo(CGSize(width: 90, height: 90))
            make.bottom.equalTo(self.view.snp_bottom).offset(-160)
            make.centerX.equalTo(self.view.snp_centerX)
        }
        // 为 userNameLabel 添加约束
        userNameLabel.snp_makeConstraints { (make) -> Void in
            make.centerX.equalTo(self.view.snp_centerX)
            make.top.equalTo(userIconView.snp_bottom).offset(10)
        }
        
        // 将用户头像裁剪为圆形
        userIconView.layer.cornerRadius = 45
        userIconView.layer.masksToBounds = true
        userIconView.layer.borderWidth = 3
        userIconView.layer.borderColor = UIColor.blueColor().CGColor
        
        userNameLabel.alpha = 0

    }
    
    /// 在 viewWillLayOutSunViews 中  view 会重新设置subView 的位置
    
    /// viewModel 属性
    var viewModel:DYWOauthViewModel = DYWOauthViewModel.sharedInstance
    
    /// 懒加载背景视图
    private lazy var backgrandImg:UIImageView = {
        let imgView = UIImageView(image: UIImage(named: "ad_background"))
        return imgView
    }()
    
    /// 懒加载用户头像 
    private lazy var userIconView:UIImageView = {
        /// 若本地的图片属性
        if let urlString = self.viewModel.userImgUrl {
            let imgView = UIImageView()
            imgView.sd_setImageWithURL(urlString)
            return imgView
        } else {
            return UIImageView(image: UIImage(named: "avatar_default_big"))
        }
    }()
    
    /// 懒加载用户名称
    private lazy var userNameLabel:UILabel = {
        let label = UILabel()
        label.text = (self.viewModel.userName ?? "" ) + ", " + "欢迎回来"
        label.font = UIFont.systemFontOfSize(14)
        label.textColor = UIColor.darkGrayColor()
        label.textAlignment = NSTextAlignment.Center
        label.sizeToFit()
        return label
    }()
    
    /// 设置动画
    private func iconViewAnimatring() {
        
        // 计算头像移动到的位置
        let newPositionY = -(UIScreen.mainScreen().bounds.height  - 160)

        // 更新约束
        self.userIconView.snp_updateConstraints(closure: { (make) -> Void in
           
            make.bottom.equalTo(self.view.snp_bottom).offset(newPositionY)
        })
        /*
        duration: NSTimeInterval -- 动画持续时间
        delay: NSTimeInterval -- 动画延迟时间
        usingSpringWithDamping: CGFloat -- 弹簧系数 系数越小 弹簧越明显
        initialSpringVelocity: CGFloat -- 重力加速度 （9.8）
        options: UIViewAnimationOptions -- 动画的可选项 一般设置 在 OC 中有多个选项 使用位移枚举  在 swift 中使用数据来表示 ‘[]’ 表示空数组
        */
        UIView.animateWithDuration(1.2, delay: 0, usingSpringWithDamping: 0.98, initialSpringVelocity: 9.8, options: [], animations: { () -> Void in
            self.view.layoutIfNeeded()
            }) { (_) -> Void in
                UIView.animateWithDuration(2.0, animations: { () -> Void in
                    self.userNameLabel.alpha = 1.0
                    }, completion: { (_) -> Void in
                        print("load done")
                        // FIXME:-- 改为通知的方式
//                        UIApplication.sharedApplication().keyWindow?.rootViewController = DYWMainController()
                        // MARK:-- 切换控制器
                        NSNotificationCenter.defaultCenter().postNotificationName(choseController, object: self)
                })
        }

    }
}
